/*
 * Copyright 北京航空航天大学  @ 2015 版权所有
 */
package com.buaa.edu.leetcode.algorithm.twopoint;

/**
 * <p>
 * 数组元素arr[i]代表点（i,arr[i]）和坐标轴(i,0)连成一条线段，找出两条线段连同x轴组成的容器容纳的水最多 
 * 
 * Find two lines, which together with
 * x-axis forms a container, such that the container contains the most water.
 * Note: You may not slant the container.容器不倾斜
 * 
 * </p>
 * 
 * @author towan
 * @email tongwenzide@163.com
 * @time 2015年5月31日
 */
public class ContainerWithMostWater {
    //先计算两个指针指向元素与X轴围成容器的大小，同时更新当前最大值，然后移动首尾两指针，直至相遇
    public int maxArea(int[] height) {
        //两异向指针
        int i = 0;
        int j = height.length-1;
        int result = 0;
        while(i<j){
            //当前最大面积
            int area = Math.min(height[i], height[j])*(j-i);
            //更新最大值
            result = Math.max(result, area);
            if(height[i]<=height[j]){
                i++;
            }else{
                j--;
            }
        }
        return result;
    }
}
